package br.edu.faculdadeprojecao.DAO;

import java.util.List;

import javax.persistence.EntityManager;

import br.edu.faculdadeprojecao.infra.JPAUtil;

public class DAO<T> {
	private EntityManager em;
	private final Class<T> classe;
	
	public DAO(EntityManager em, Class<T> classe){
		this.em = em;
		this.classe = classe;
	}
	
	public void adiciona(T t){
		em = new JPAUtil().getEntityManager();
		em.getTransaction().begin();
		em.persist(t);
		em.close();
	}
	
	public void altera(T t){
		em.merge(t);
	}
	
	public void remove(T t){
		em.remove(t);
	}
	
	public T busca(Integer id){
		return em.find(classe, id);
	}
	
	@SuppressWarnings("unchecked")
	public List<T> lista(){
		return em.createQuery("select e from " + classe.getName() + " e").getResultList();
	}

}
